﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Demo
{
    class Program
    {
        /* 在游戏中会出现很多种不同用途的 NPC，这些 NPC 有各自的存在的价值和作用，同时又具备一些共性的东西。
            在开发 NPC 系统的时候，往往是需要提取共性，独立出一个父类，然后子类继承实现不同作用的 NPC。
            分析：任务 NPC，商贩 NPC，铁匠 NPC，三种 NPC 的种类。
            共有属性：npc 的名字，npc 的类型；
            共有方法：都能和玩家交互(交谈)；
         */
        static void Main(string[] args)
        {
            Console.WriteLine("----------采集---------");
            TaskNPC T1 = new TaskNPC("吉原悠一", NPCtype.任务NPC, TaskType.采集NPC, "猥琐点儿，再猥琐点儿");
            Test(T1);
            Console.WriteLine("----------杀怪---------");
            TaskNPC T2 = new TaskNPC("时崎狂三", NPCtype.任务NPC, TaskType.杀怪NPC, "我们走我们走");
            Test(T2);
            Console.WriteLine("----------送信---------");
            TaskNPC T3 = new TaskNPC("石原里美", NPCtype.任务NPC, TaskType.送信NCP, "你说谁是约德尔人呢");
            Test(T3);
            Console.WriteLine("----------武器---------");
            StoreNPC S1 = new StoreNPC("鸢一折纸", NPCtype.商贩NPC, StoreType.武器NPC, "对待装备要像对待情人一样");
            Test(S1);
            Console.WriteLine("----------材料---------");
            StoreNPC S2 = new StoreNPC("祢豆子", NPCtype.商贩NPC, StoreType.材料NPC, "都是好东西");
            Test(S2);
            Console.WriteLine("----------食物---------");
            StoreNPC S3 = new StoreNPC("夜刀神十香", NPCtype.商贩NPC, StoreType.食物NPC, "爱情会和阿拉德大陆一样，永远存在……");
            Test(S3);
            Console.WriteLine("----------修补---------");
            BlacksmithNPC I1 = new BlacksmithNPC("御坂美琴", NPCtype.铁匠NPC, BlacksmithType.修补NPC, "你指尖跃动的电光，是我此生不灭的信仰");
            Test(I1);
            Console.WriteLine("----------强化---------");
            BlacksmithNPC I2 = new BlacksmithNPC("上条当麻", NPCtype.铁匠NPC, BlacksmithType.强化NPC, "用耳去听，用心去斩；刀斩肉身，心斩灵魂");
            Test(I2);
            Console.WriteLine("----------打造---------");
            BlacksmithNPC I3 = new BlacksmithNPC("一方通行", NPCtype.铁匠NPC, BlacksmithType.打造NPC, "武艺的根本，就是与自然合一");
            Test(I3);
        }
        static void Test(NPC npc)
        {
            npc.SayHello();
        }
    }
}


